The notion of a transaction is an important concept for transactional systems, such as database management systems, recoverable file systems and transaction-based operation systems. Briefly stated, a transaction is an action or set of actions that includes the ACID (Atomicity, Consistency, Isolation and Durability) properties. Transactional logging involves maintaining a transactional log that durably records a time serial history of transactions in a system. A transactional log provides information for restoring a system to a particular state in time prior to a system failure. ARIES (Algorithm for Recovery and Isolation Exploiting Semantics) is one very popular recovery scheme used for restoring a failed system through transactional logging.
Because system recovery is often a desired attribute, transactional logging is a core feature in many database systems and transaction managers. Transactions are typically recorded in a transactional log by a logging service in case the transactions need to be rolled back because of a failure. The basic functions of a transactional logging service are to marshal client data into log records, store the records in a storage media, and read the log records back in a reliable manner.
Traditionally, each client makes use of a dedicated transactional logging service that has log files, I/O bandwidth, and disk storage locations dedicated to the particular client. Dedicated transactional logging services are efficient when only a single client is included. When multiple log clients exist on a system, multiple dedicated logging services are necessary, which causes the overall system performance to suffer because of duplicated efforts. The requirements for separate I/O bandwidth and disk storage locations create large system overhead just for maintaining a log. The development of a logging service that can operate efficiently while conserving overall system resources and system overhead continues to elude those skilled in the art.